import {TagVO} from "@/api/tag/types";
import {UserIntro} from "@/api/user/types";
import {PageQuery} from "@/model";

/**
 * 搜索条件
 */
export interface RecordQuery extends PageQuery{
    /**
     * 关键字
     */
    keyword: string;
}


/**
 * 记录搜索
 */
export interface RecordSearch {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录内容
     */
    content: string;
}

/**
 * 记录
 */
export interface Record {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录者信息
     */
    userIntro: UserIntro;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录类型 (1约会 2活动 3赛事 4帮忙)
     */
    type: number;
    /**
     * 是否置顶 (0否 1是)
     */
    isTop: number;
    /**
     * 内容
     */
    content: string;
    /**
     * 图片url列表字符串
     */
    imgListStr: string;
    /**
     * 视频url
     */
    video: string;
    /**
     * 点赞数
     */
    likeNumber: number;
    /**
     * 浏览量
     */
    viewCount: number;
    /**
     * 收藏数
     */
    collectNumber: number;
    /**
     * 记录标签
     */
    tagNameList: string[];
    /**
     * 发表时间
     */
    createTime: string;
}

/**
 * 记录上下篇
 */
export interface RecordPagination {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录标题
     */
    title: string;
}

/**
 * 记录信息
 */
export interface RecordInfo {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录者id
     */
    userId: number;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录内容
     */
    content: string;
    /**
     * 记录图片
     */
    images: string;
    /**
     * 图片列表
     */
    imgList: string[];
    /**
     * 记录视频
     */
    video: string;
    /**
     * 记录类型 (1约会 2活动 3赛事 4帮忙)
     */
    type: number;
    /**
     * 点赞数
     */
    likeNumber: number;
    /**
     * 浏览量
     */
    viewCount: number;
    /**
     * 收藏数
     */
    collectNumber: number;
    /**
     * 记录标签
     */
    tagVOList: TagVO[];
    /**
     * 上一篇记录
     */
    lastRecord: RecordPagination;
    /**
     * 下一篇记录
     */
    nextRecord: RecordPagination;
    /**
     * 发表时间
     */
    createTime: string;
    /**
     * 更新时间
     */
    updateTime: string;
}

/**
 * 推荐记录(总览一样)
 */
export interface RecordRecommend {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录类型 (1约会 2活动 3赛事 4帮忙)
     */
    type: number;
    /**
     * 发布时间
     */
    createTime: string;
}

/**
 * 记录类型，标签
 */
export interface RecordCondition {
    /**
     * 记录id
     */
    id: number;
    /**
     * 记录者id
     */
    userId: number;
    /**
     * 记录类型 (1约会 2活动 3赛事 4帮忙)
     */
    type: number;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录标签
     */
    tagVOList: TagVO[];
    /**
     * 发布时间
     */
    createTime: string;
}

/**
 * 记录条件列表
 */
export interface RecordConditionList {
    /**
     * 记录列表
     */
    recordConditionVOList: RecordCondition[];
    /**
     * 条件名
     */
    name: string;
}

/**
 * 记录表单
 */
export interface RecordForm {
    /**
     * 记录id
     */
    id?: number;
    /**
     * 记录者id
     */
    userId: number;
    /**
     * 记录缩略图
     */
    cover: string;
    /**
     * 记录标题
     */
    title: string;
    /**
     * 记录内容
     */
    content: string;
    /**
     * 记录图片
     */
    images?: string;
    /**
     * 图片列表
     */
    imgList?: string[];
    /**
     * 记录视频
     */
    video?: string;
    /**
     * 记录类型 (1约会 2活动 3赛事 4帮忙)
     */
    type: number;
    /**
     * 标签名
     */
    tagNameList: string[];
    /**
     * 是否置顶 (0否 1是)
     */
    isTop: number;
    /**
     * 是否推荐 (0否 1是)
     */
    isRecommend: number;
    /**
     * 状态 (1公开 2私密 3草稿)
     */
    status: number;
}

/**
 * 逻辑删除
 */
export interface DeleteDTO {
    /**
     * id列表
     */
    idList: number[];
    /**
     * 是否删除 (0否 1是)
     */
    isDelete: number;
}
